home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4925 / 4925.xpi / components / AutoPagerAgent.js < prev    next >
Encoding:
Text File  |  2010-02-08  |  4.3 KB  |  141 lines

  1. var headerName  = "X-AutoPager";
  2. var headerValue = "0.6.0.13";
  3.  
  4.  
  5.  
  6. function autopagerHTTPListener() { }
  7.  
  8. autopagerHTTPListener.prototype = {
  9.     pref: Components.classes["@mozilla.org/preferences-service;1"].
  10.         getService(Components.interfaces.nsIPrefService).getBranch("autopager"),
  11.     LOG : function (text)
  12.     {
  13.         if (this.pref.getBoolPref(".debug"))
  14.         {
  15.             var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
  16.             consoleService.logStringMessage(text);
  17.         }
  18.     },
  19.   observe: function(subject, topic, data)
  20.   {
  21.       if (topic == "http-on-modify-request") {
  22.           var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
  23.           if (httpChannel.URI.host.match(/ap\.teesoft\.info/))
  24.           {
  25.             httpChannel.setRequestHeader("X-AutoPager-Rules", this.pref.getCharPref(".ids"), false);
  26.             httpChannel.setRequestHeader("X-AutoPager", "0.6.0.13", false);
  27.  
  28.           }
  29.  
  30.           if (this.pref.prefHasUserValue(".httphead." + httpChannel.URI.host))
  31.           {
  32.               if (!this.pref.getBoolPref(".httphead." + httpChannel.URI.host))
  33.               {
  34.                   return;
  35.               }
  36.  
  37.           }else
  38.           {
  39.               if (!this.pref.getBoolPref(".set-x-autopager-httphead"))
  40.               {
  41.                   return;
  42.               }
  43.           }
  44.           this.LOG("----------------------------> (" + subject + ") mod request");
  45.  
  46.           httpChannel.setRequestHeader(headerName, headerValue, false);
  47.           var agent = httpChannel.getRequestHeader("User-Agent") + " AutoPager/0.6.0.13";
  48.           httpChannel.setRequestHeader("User-Agent", agent, false);
  49.           return;
  50.       }
  51.  
  52.  
  53.       if (topic == "app-startup") {
  54.  
  55.           this.LOG("----------------------------> app-startup");
  56.  
  57.           var os = Components.classes["@mozilla.org/observer-service;1"]
  58.                              .getService(Components.interfaces.nsIObserverService);
  59.  
  60.           os.addObserver(this, "http-on-modify-request", false);
  61.           return;
  62.       }
  63.   },
  64.  
  65.   QueryInterface: function (iid) {
  66.         if (iid.equals(Components.interfaces.nsIObserver) ||
  67.             iid.equals(Components.interfaces.nsISupports))
  68.             return this;
  69.  
  70.         Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
  71.         return null;
  72.     },
  73.     dumpObject : function (obj,level)
  74.     {
  75.         if(obj == null || typeof obj != 'object' || level>10)
  76.             return obj;
  77.         var temp = "[";
  78.  
  79.         for(var key in obj)
  80.         {
  81.             if (temp.length>1)
  82.                 temp+=",";
  83.             try{
  84.                 temp += key + "=" + this.dumpObject(obj[key],level+1);
  85.             }catch(e){
  86.                 temp += key + "=<unable to access>";
  87.             }
  88.         }
  89.         return temp+"]";
  90.     },
  91. };
  92.  
  93. var autopagerAgentModule = {
  94.     registerSelf: function (compMgr, fileSpec, location, type) {
  95.  
  96.         var compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  97.         compMgr.registerFactoryLocation(this.myCID,
  98.                                         this.myName,
  99.                                         this.myProgID,
  100.                                         fileSpec,
  101.                                         location,
  102.                                         type);
  103.  
  104.  
  105.         var catMgr = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager);
  106.         catMgr.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true);
  107.     },
  108.  
  109.  
  110.     getClassObject: function (compMgr, cid, iid) {
  111.         return this.myFactory;
  112.     },
  113.  
  114.     myCID: Components.ID("{9cf5f3df-2505-42dd-9094-c1631bd1be1c}"),
  115.  
  116.     myProgID: "@autopager.teesoft.info/autopagerHTTPListener;1",
  117.  
  118.     myName:   "AutoPager Agent Modify HTTP Listener",
  119.  
  120.     myFactory: {
  121.         QueryInterface: function (aIID) {
  122.             if (!aIID.equals(Components.interfaces.nsISupports) &&
  123.                 !aIID.equals(Components.interfaces.nsIFactory))
  124.                 throw Components.results.NS_ERROR_NO_INTERFACE;
  125.             return this;
  126.         },
  127.  
  128.         createInstance: function (outer, iid) {
  129.           return new autopagerHTTPListener();
  130.         }
  131.     },
  132.  
  133.     canUnload: function(compMgr) {
  134.         return true;
  135.     }
  136. };
  137.  
  138. function NSGetModule(compMgr, fileSpec) {
  139.     return autopagerAgentModule;
  140. }
  141.